package com.ailargemodel.common.utils;

import com.ailargemodel.common.BaseResponse;
import com.ailargemodel.common.ErrorCode;

import java.util.ArrayList;
import java.util.List;

/**
 * 返回工具类
 */
public class ResultUtil {

    /**
     * ok
     * @param data
     * @return
     * @param <T>
     */
    public static <T> BaseResponse<T> sucess(T... data) {
        List<T[]> datas = new ArrayList<>();
        datas.add(data);
        return (BaseResponse<T>) new BaseResponse<>("ok", data,200);
    }

    /**
     * ok
     * @param data
     * @return
     * @param <T>
     */
    public static <T> BaseResponse<T> sucess(T data ) {
        return new BaseResponse<>("ok",data,200);
    }

    public static <T> BaseResponse<T> sucess(T data,String sessionId ) {
        return new BaseResponse<>("ok",data,200,sessionId);
    }

    /**
     * fail
     * @param errorCode
     * @return
     */
    public static BaseResponse error(ErrorCode errorCode) {
        return new BaseResponse<>(errorCode.getCode(),errorCode.getMessage(), errorCode.getDescription());
    }

    /**
     * fail, 并且允许用户定义一个消息, 以及错误描述
     * @param errorCode
     * @param msg
     * @param description
     * @return
     */
    public static BaseResponse error(ErrorCode errorCode, String msg , String description) {
        return new BaseResponse<>(errorCode.getCode(), msg, description);
    }

    /**
     * fail, 并且允许用户定义一错误描述
     * @param errorCode
     * @param description
     * @return
     */
    public static BaseResponse error(ErrorCode errorCode, String description) {
        return new BaseResponse<>(errorCode.getCode(), errorCode.getMessage(), description);
    }


    /**
     * fail, 并且允许用户定义一个code , 消息, 以及错误描述
     * @param code
     * @param msg
     * @param description
     * @return
     */
    public static BaseResponse error(int code, String msg , String description) {
        return new BaseResponse<>(code, msg, description);
    }
}
